Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Динамічне виділення пам’яті для одно- та двовимірних масивів

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
О
Факультет:
СІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла

Національний технічний університет України «КПІ імені Ігоря Сікорського» Кафедра автоматизації проектування енергетичних процесів і систем ЗВІТ з лабораторної роботи № 2 з дисципліни «Алгоритмізація та Програмування 2» Тема «Динамічне виділення пам’яті для одно- та двовимірних масивів» Варіант: 17 Завдання на лабораторну роботу 1. Ознайомитись з особливостями роботи з динамічними двовимірними масивами. 2. Виконати індивідуальне завдання. 3. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій. 4. Вихідні дані (завдання) обрати згідно свого варіанта у Додатку B-2. Мій варіант 17: Теоретичні відомості: Для виділення пам’яті необхідно виконати наступні кроки: 1. Об’явити масив вказівників (наприклад, int **parray;); 2. Виділити блоки оперативної пам’яті під одномірні масиви, що представляють собою рядки заданої матриці (наприклад, parray = (int**)malloc(N * sizeof(int*));); 3. записати адреси рядків в масив вказівників (наприклад, parray[i] = (int*)malloc(M * sizeof(int));). Для звільнення пам’яті необхідно виконати такі кроки: 1. Видалити адреси рядків в масиві покажчиків (наприклад, for (i = 0; i < N; i++) {free(parray[i]);}) 2. Видалити масив вказівників (наприклад, free(parray);) При такому способі динамічного виділення пам’яті компілятору явно вказується кількість рядків і кількість стовпців в масиві. Функція realloc перерозподіляє пам’ять. Синтаксис: #include <stdlib.h> #include <alloc.h> void * realloc(void *block, size_t size); Опис: realloc намагається стиснути або збільшити попередньо виділений блок block до нового розміру в size байт. Аргумент block вказує на блок пам’яті, отриманий при виклику функцій malloc або realloc. Якщо block є нульовим покажчиком, realloc працює також як і malloc. realloc змінює розмір виділеного блоку пам’яті і при необхідності копіює його вміст в новий блок. Код програми: #include <stdio.h> #include <malloc.h> #include <stdlib.h> #define SIZE 5 #define nCol 2 #define nRow 1 #define K 7 int main(void) { int **parray; parray = (int**)malloc(SIZE * sizeof(int*)); for (int i = 0; i < SIZE; i++) { parray[i] = (int*)malloc(SIZE * sizeof(int)); } for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { parray[i][j] = 9 + rand() % (99 + 1 - 9); } } int counter = 0; int newRow; int newCol = SIZE; for (int i = nCol; counter <= K; i++) { newRow = SIZE; for (int j = 0; j < SIZE; j++) { if (counter == K) break; if (i == nCol) j = nRow; newRow--; counter++; } parray[i] = realloc(parray[i], sizeof(int) * newRow); if (counter == K) break; newCol--; } parray = realloc(parray, sizeof(int *) * newCol); parray = realloc(parray, sizeof(int *) * (newCol + 1)); for (int i = 0; i < SIZE; i++) { free(parray[i]); } free(parray); return 0; } Посилання на програму в repl.it: https://replit.com/join/ilsdgyefzj-dolphiedude Висновок: Я ознайомився з особливостями роботи з динамічними двовимірними масивами. Дослідив особливості їхнього застосування. Це мені дозволило написати програму, що розподіляє, змінює та звільняє пам’ять масиву. Спочатку видалив пам’ять N елементів починаючи з елемента K, а потім додав стовпець. Особливих труднощів при виконанні не зустрів
Антиботан аватар за замовчуванням

29.06.2023 21:06

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини